# XML格式文件，可扩展标记语言，是一种简单的数据存储语言，XML被设计用来传输和存储数据
# 存储，可用来存放配置文件，例如java的配置文件
# 传输，网络传输时以这种格式存在，例如早期的ajax传输的数据，soap协议


from xml.etree import ElementTree as ET

"""
# 网络上获取到的xml文本
content = '''
<action name="shili" class="downAction" method="shili">
    <result type="stream" name="success">
        <!-- 文件MIME类型 -->
        <!-- ${contentType}读取Action的getContentType方法 -->
        <param name="contentType">${contentType}</param>
        <!-- 下载附件名称contentDisposition 格式：attachment;filename=xxxx -->
        <param name="contentDisposition">attachment;fileName=${file}</param>
        <!-- 设置流方法名称,必须Action内部 提供 getTarget 返回值InputStream， 用来返回文件内容 -->
        <param name="inputName">target</param>
    </result>
    <!-- 用户下载权限校验 -->
</action>
'''
root = ET.XML(content)
print(root) # <Element 'action' at 0x00000170E2123B88>
"""

# ET去打开xml文件
tree = ET.parse('one.xml')
# 获取根节点
root = tree.getroot()
print(root) # <Element 'action' at 0x000001C15C2372C8>

# 读取节点数据，获取根节点的孩子节点
# for child in root:
#     # child.tag = result
#     # child.attrib = {'name':'success'}
#     print(child.tag,child.attrib)
#     for node in child :
#         print(node.tag, node.attrib, node.text)

# result = root.find('result')
# print(result)   # 找到第一个result节点
# print(result.tag, result.attrib)

# results = root.findall('result')    # 找到所有的result标签形成列表
# print(results)  # [<Element 'result' at 0x000002317F5D72C8>, <Element 'result' at 0x000002317F5D74A8>]

# find只能直接找下一级的
# param = root.find('param')
# print(param)

# v2 = root.find('result').find('param')
# print(v2)

# param = result.find('param')
# print(param.tag,param.attrib,param.text)

# 去根节点的子子孙孙里面找所有的result节点
# for child in root.iter('result'):
#     print(child.tag,child.attrib)


'''
# 修改节点内容和属性
param = root.find('result').find('param')
print(param,param.text)
param.text = "999"    # 修改内容
param.set('update','32451') # 添加属性
print(param.text,param.attrib)

# # 删除节点
# root.remove(root.find('result'))    # 删除第一个
# print(root.findall('result'))

# 修改之后要保存文件
tree = ET.ElementTree(root)
tree.write('new.xml',encoding='utf-8')
'''

